
/**
 * Write a description of class KlantMenu here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class KlantMenu
{

    private MenuKiezer menu;
    private Supermarkt supermarkt;
    private Klant klant;
    private TuiHelper tuiHelper;
    private double random=0.0;
    private AfdelingMenu afdelingMenu;
    
    public KlantMenu(Supermarkt supermarkt, Klant klant){
        maakKlantMenu();
        this.supermarkt=supermarkt;
        this.klant=klant;
    }

    private void maakKlantMenu() {
        menu = new MenuKiezer( "Wat wilt u doen?", "maak een keuze" );
        menu.addItem    ( "Winkelen"     );
        menu.addItem    ( "Mandje bekijken");
        menu.addItem    ( "Afrekenen"    );
        menu.addItem    ( "Suggesties"      );
        menu.addStopItem( "Winkel verlaten"      );
    }
    
    public void toonKlantMenu() {
        int keuze = -1; 
        TuiHelper.clear();
        while ( keuze != 0 ) {
            keuze = menu.getMenukeuze();
            switch ( keuze ) {
            case 1: 
                winkelen();     
                break;
            case 2:
                mandje();
                break;
            case 3: 
                afrekenen();
                break;
            case 4: 
                toonSuggestiesMenu();
                break;
            default:
                System.out.println("Ongeldige keuze");
            }
            if (keuze == 0 && klant.betaald()==false ){
                TuiHelper.clear(); 
                String legen = tuiHelper.stelVraagMetTekstAntwoord( "U heeft nog niet betaald ! \nDruk een toets om terug te gaan of type 'L' om mandje te legen, \nof type 'S' om de producten te stelen." );
                if (legen.equalsIgnoreCase("L") ){
                    TuiHelper.clear();
                    for(Product p : klant.getWinkelwagen()){
                        klant.returnProductAantal(p, p.getHoudbaarheidsDatum(),p.getAantalWinkelwagen());
                    }
                    klant.winkelwagenLegen();
                }
                else if(legen.equalsIgnoreCase("S")){
                    TuiHelper.clear();
                    klant.stelen();
                }
                else{
                    TuiHelper.clear();
                    toonKlantMenu();
                }
            }
            else if(keuze == 0){
                TuiHelper.clear();
                break;
            }
        }

    }
    
    public void toonSuggestiesMenu(){ 
        Afdeling afdeling = supermarkt.topAfdelingKlant(klant.getNaam() );
        afdelingMenu = new AfdelingMenu( afdeling, supermarkt, klant );
        afdelingMenu.toonProductSuggesties();
    }
    
    public void winkelen(){
        if(supermarkt.triggerRamp(klant)){
            //Doe niks als er een ramp gebeurt
        }
        else{
            WinkelenMenu winkelenMenu = new WinkelenMenu(supermarkt, klant);
            winkelenMenu.toonAfdelingmenu();
        }
    }
    
    public void mandje(){
        if(supermarkt.triggerRamp(klant)){
            //Doe niks als er een ramp gebeurt
        }
        else{
            klant.toonMandje();
        }
    }
    
    public void afrekenen(){  
        klant.betaal();
    }
    
    public void clear(){
        TuiHelper.clear();
    }
}
